#ifndef FILE_UTIL_H
#define FILE_UTIL_H

#include <cstdio>

namespace Logger
{
    // 封装文件操作，主要是写入
    class FileUtil
    {
    public:
        FileUtil(const char *fileName);
        ~FileUtil();

        void write(const char *data, size_t size); // 写缓冲
        void flush();                              // 缓冲写入文件

        off_t getWrittenBytes() const
        {
            return this->writtenBytes_;
        }

    private:
        size_t write1(const char *data, size_t size); // 写文件

        FILE *fd_;
        char buffer_[64 * 1024]; // 提高写入效率，64KB
        off_t writtenBytes_;     // 已写入文件的总字节数，off_t类型用于大文件支持
    };
} // namespace Logger

#endif // FILE_UTIL_H